MODELO MLP#

import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import SimpleRNN, Dense, Dropout
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score, mean_absolute_percentage_error
from statsmodels.stats.diagnostic import acorr_ljungbox
import matplotlib.pyplot as plt
import statsmodels.api as sm
from math import sqrt
import plotly.io as pio
import plotly.express as px
import plotly.offline as py
pio.renderers.default = "notebook"

Datos#

data = pd.read_csv(r"C:\Users\claud\Downloads\Bitcoin Historical Data.csv")
data
Date Price Open High Low Vol. Change %
0 03/24/2024 67,211.9 64,036.5 67,587.8 63,812.9 65.59K 4.96%
1 03/23/2024 64,037.8 63,785.6 65,972.4 63,074.9 35.11K 0.40%
2 03/22/2024 63,785.5 65,501.5 66,633.3 62,328.3 72.43K -2.62%
3 03/21/2024 65,503.8 67,860.0 68,161.7 64,616.1 75.26K -3.46%
4 03/20/2024 67,854.0 62,046.8 68,029.5 60,850.9 133.53K 9.35%
... ... ... ... ... ... ... ...
4994 07/22/2010 0.1 0.1 0.1 0.1 2.16K 0.00%
4995 07/21/2010 0.1 0.1 0.1 0.1 0.58K 0.00%
4996 07/20/2010 0.1 0.1 0.1 0.1 0.26K 0.00%
4997 07/19/2010 0.1 0.1 0.1 0.1 0.57K 0.00%
4998 07/18/2010 0.1 0.0 0.1 0.1 0.08K 0.00%

4999 rows × 7 columns

Para que los datos estén en el formato correcto se les aplicará el siguiente proceso de eliminación de formatos

# Eliminar comas y convertir las columnas relevantes a float
data['Price'] = data['Price'].str.replace(',', '').astype(float)
data['Open'] = data['Open'].str.replace(',', '').astype(float)
data['High'] = data['High'].str.replace(',', '').astype(float)
# Función para convertir valores con 'K', 'M', 'B' o números directos
def convert_volume(value):
    # Verificar si el valor ya es numérico
    if isinstance(value, float) or isinstance(value, int):
        return value  # Devolver el valor si ya es numérico
    elif 'K' in value:
        return float(value.replace('K', '')) * 1_000
    elif 'M' in value:
        return float(value.replace('M', '')) * 1_000_000
    elif 'B' in value:
        return float(value.replace('B', '')) * 1_000_000_000
    else:
        return float(value.replace(',', ''))

# Aplicar la función a la columna 'Vol.'
data['Vol.'] = data['Vol.'].apply(convert_volume)

# Verificar que la conversión haya sido exitosa
print(data[['Vol.']].head())
       Vol.
0   65590.0
1   35110.0
2   72430.0
3   75260.0
4  133530.0

Se verifica el formato de la fecha y se agrega la columnna indice

# Asegurarse de que la columna "Date" sea de tipo datetime
data['Date'] = pd.to_datetime(data['Date'], format='%m/%d/%Y')
# Ordenar los datos por fecha de forma ascendente
data = data.sort_values(by='Date', ascending=True).reset_index(drop=True)
# Verificar si hay valores nulos en cada columna
print(data.isnull().sum())
# Alternativa: Mostrar las filas que contengan valores faltantes
missing_data = data[data.isnull().any(axis=1)]
print(f"Filas con datos faltantes:\n{missing_data}")

# Asegúrate de que la columna 'Date' esté en formato datetime

# Convertir la fecha a un timestamp (número de días desde Epoch)

# Ver las primeras filas con la nueva columna numérica
data['indice'] = range(len(data))
Date        0
Price       0
Open        0
High        0
Low         0
Vol.        6
Change %    0
dtype: int64
Filas con datos faltantes:
          Date  Price  Open  High   Low  Vol. Change %
337 2011-06-20   17.5  17.5  17.5  17.5   NaN    0.00%
338 2011-06-21   17.5  17.5  17.5  17.5   NaN    0.00%
339 2011-06-22   17.5  17.5  17.5  17.5   NaN    0.00%
340 2011-06-23   17.5  17.5  17.5  17.5   NaN    0.00%
341 2011-06-24   17.5  17.5  17.5  17.5   NaN    0.00%
342 2011-06-25   17.5  17.5  17.5  17.5   NaN    0.00%

Funciones#

Ventanas deslizantes#

Para esto creamos una función que divide los datos en entrenamiento, validación y prueba. Esta función avanca con un paso de 1. las ventanas y el horizonte de predicción son variables

import numpy as np

def create_sliding_windows(data, window_size, horizon):
    X_train, Y_train = [], []
    X_val, Y_val = [], []
    X_test, Y_test = [], []

    # Generar ventanas deslizantes con sus índices correspondientes
    for i in range(0, len(data) - window_size - 3 * horizon + 1, 1):
        # Entrenamiento
        X_train.append(data[i:i + window_size])
        Y_train.append(data[i + window_size:i + window_size + horizon])

        # Validación
        X_val.append(data[i + window_size:i + window_size + horizon])
        Y_val.append(data[i + window_size + horizon:i + window_size + 2 * horizon])

        # Prueba
        X_test.append(data[i + window_size + horizon:i + window_size + 2 * horizon])
        Y_test.append(data[i + window_size + 2 * horizon:i + window_size + 3 * horizon])

    # Convertir a arrays de NumPy
    X_train = np.array(X_train)  # (n_samples, window_size)
    X_val = np.array(X_val)
    X_test = np.array(X_test)

    Y_train = np.array(Y_train)  # (n_samples, horizon)
    Y_val = np.array(Y_val)
    Y_test = np.array(Y_test)

    # Asegurarse de que los datos están en la forma adecuada para MLP (n_samples, n_features)
    X_train = X_train.reshape(X_train.shape[0], window_size)  # Eliminar dimensión extra
    X_val = X_val.reshape(X_val.shape[0], window_size)
    X_test = X_test.reshape(X_test.shape[0], window_size)

    return X_train, Y_train, X_val, Y_val, X_test, Y_test

Construcción del Modelo#

Creamos una función para crear el modelo teniendo en cuenta los parametros de las iteraciones neurons, window, dropout_rate, horizon. Batch size se aplicará más adelante

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Input

def build_mlp_model(neurons, window, dropout_rate, horizon):
    model = Sequential()
    model.add(Input(shape=(window,))) 
    model.add(Dense(neurons, activation='relu'))  
    model.add(Dropout(dropout_rate))  
    model.add(Dense(horizon))  
    model.compile(optimizer='adam', loss='mse')  
    return model
import numpy as np
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
from statsmodels.stats.diagnostic import acorr_ljungbox
from statsmodels.tsa.stattools import q_stat, acf
import statsmodels.api as sm
from scipy.stats import shapiro

Métricas#

Creamos una función que calcule las metricas importantes

def metricas(windows, pred, neurons, batchsize, dropout_rate, horizon, window):
    
    # Calcular métricas en Validación
    if np.isnan(pred).any():
        print("Advertencia: Las predicciones contienen NaN.")
        metrics=None
    else:
        
        mae = mean_absolute_error(windows, pred)
        mse = mean_squared_error(windows, pred)
        rmse = np.sqrt(mse)
        mape = np.mean(np.abs((windows - pred) / windows)) * 100
        r2 = r2_score(windows, pred)

        
        # Guardar métricas del conjunto de validación junto con pruebas de hipótesis
        metrics = {
            'neurons': neurons,
            'batchsize': batchsize,
            'Dropout': dropout_rate,
            'horizon': horizon,
            'window': window,
            'MAPE': mape,
            'MAE': mae,
            'MSE': mse,
            'RMSE': rmse,
            'R2': r2,
        
    }
    return metrics
import pandas as pd
import numpy as np
import statsmodels.api as sm
from statsmodels.graphics.gofplots import qqplot
from statsmodels.tsa.stattools import acf, q_stat
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
import plotly.express as px
import matplotlib.pyplot as plt
from tensorflow.keras.callbacks import EarlyStopping
from sklearn.preprocessing import MinMaxScaler

Función de optimización#

se creo una función con la cual se itera entre todas las posibles combinaciones de paramtros. Se tiene en cuenta el early stoping y la estabilización de la metrica mse para encontar el mejor modelo. luego de que el mse no varie más del 5% 5 iteraciones seguidas se detiene. Además se guardan los residuos y metricas de cada modelo para su posterior uso.

def busqueda(datos, windows, horizons, dropout_rates, batchsizes, neurons_list):
    validation_metrics = []
    test_metrics = []
    train_metrics = []
    residual_hist = []

    best_model = None
    params_best_model = {}
    best_score = np.inf 
    previous_mse = None  # Para rastrear el MSE de la iteración anterior
    residuals_bestmodel = None
    stable_iterations = 0  # Contador para rastrear iteraciones estables

    early_stop = EarlyStopping(
        monitor='val_loss',
        patience=5,
        restore_best_weights=True,
        verbose=1
    )

    for neurons in neurons_list:
        for window in windows:
            for horizon in horizons:
                if window == horizon:
                    x_train, y_train, x_val, y_val, x_test, y_test = create_sliding_windows(
                        datos, window, horizon)
                    for dropout_rate in dropout_rates:
                        for batchsize in batchsizes:

                            # Crear y entrenar el modelo
                            print(f"Entrenando modelo con {neurons} neuronas, dropout {dropout_rate}, "
                                  f"batch size {batchsize}, horizon {horizon}, window {window}")
                            model = build_mlp_model(neurons, window, dropout_rate, horizon)

                            early_stop = EarlyStopping(
                                monitor='val_loss', patience=2, 
                                restore_best_weights=True, verbose=1)

                            history = model.fit(
                                x_train, y_train,
                                validation_data=(x_val, y_val),
                                callbacks=[early_stop],
                                epochs=1, batch_size=batchsize, verbose=0
                            )

                            # Predicciones y cálculo de residuos
                            val_pred = model.predict(x_val)
                            test_pred = model.predict(x_test)
                            train_pred = model.predict(x_train)

                            residuals = y_val - val_pred  # Residuos de validación
                            residual_hist.append({
                                'neurons': neurons,
                                'batchsize': batchsize,
                                'dropout_rate': dropout_rate,
                                'horizon': horizon,
                                'window': window,
                                'residuals': residuals
                            })

                            # Calcular métricas en validación
                            
                            metricas_val = metricas(y_val, val_pred, neurons, batchsize, dropout_rate, horizon, window)
                            validation_metrics.append(metricas_val)

                            # Calcular métricas en prueba
                            metricas_test = metricas(y_test, test_pred, neurons, batchsize, dropout_rate, horizon, window)
                            test_metrics.append(metricas_test)

                            # Calcular métricas en entrenamiento
                            metricas_train = metricas(y_train, train_pred, neurons, batchsize, dropout_rate, horizon, window)
                            train_metrics.append(metricas_train)

                            if metricas_val:
                                mse = metricas_val['MSE']
                                print(f"MSE: {mse}")

                                # Verificar la fluctuación del MSE
                                if previous_mse:
                                    variation = abs(mse - previous_mse) / previous_mse
                                    if variation < 0.05:
                                        stable_iterations += 1
                                        print(f"Fluctuación menor al 5% en el MSE por {stable_iterations} iteración(es).")
                                    else:
                                        stable_iterations = 0  # Reiniciar contador si hay variación mayor al 5%

                                    if stable_iterations >= 5:
                                        print("Fluctuación menor al 5% durante 5 iteraciones consecutivas. Deteniendo la búsqueda.")
                                        return (validation_metrics, test_metrics, train_metrics, 
                                                residual_hist, best_model, params_best_model, residuals_bestmodel)

                                previous_mse = mse

                                # Guardar el mejor modelo si es necesario
                                if mse < best_score:
                                    best_score = mse
                                    best_model = model
                                    params_best_model = {
                                        'neurons': neurons,
                                        'batchsize': batchsize,
                                        'dropout_rate': dropout_rate,
                                        'horizon': horizon,
                                        'window': window,
                                        'MSE': mse
                                    }
                                    residuals_bestmodel = residuals

    return (validation_metrics, test_metrics, train_metrics, residual_hist, best_model, params_best_model, residuals_bestmodel)

Serie Price#

Utilización de las funciones para encontrar los mejores parametros para la serie de tiempo Price

Modelo#

windows=[7,14,21,28]
horizons=[7,14,21,28]
dropout_rates=[0.2,0.4,0.6,0.8]
batchsizes=[16,32,64,128]
neurons_list=[10, 100, 1000,10000]


datos=data['Price']
validation_metrics_price,test_metrics_price,train_metrics_price,residual_hist_price,best_model_price,params_best_model_price,residuals_bestmodel_price=busqueda (datos,windows,horizons,dropout_rates,batchsizes,neurons_list)
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 16, horizon 7, window 7
  1/156 [..............................] - ETA: 7s

 45/156 [=======>......................] - ETA: 0s

 98/156 [=================>............] - ETA: 0s

151/156 [============================>.] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 72/156 [============>.................] - ETA: 0s

124/156 [======================>.......] - ETA: 0s

156/156 [==============================] - 0s 910us/step
  1/156 [..............................] - ETA: 2s

 56/156 [=========>....................] - ETA: 0s

126/156 [=======================>......] - ETA: 0s

156/156 [==============================] - 0s 914us/step
MSE: 22077184.02984031
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 32, horizon 7, window 7
  1/156 [..............................] - ETA: 4s

 96/156 [=================>............] - ETA: 0s

154/156 [============================>.] - ETA: 0s

156/156 [==============================] - 0s 818us/step
  1/156 [..............................] - ETA: 1s

 67/156 [===========>..................] - ETA: 0s

125/156 [=======================>......] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 82/156 [==============>...............] - ETA: 0s

156/156 [==============================] - 0s 709us/step
MSE: 93944835.91920672
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 64, horizon 7, window 7
  1/156 [..............................] - ETA: 4s

 80/156 [==============>...............] - ETA: 0s

132/156 [========================>.....] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 67/156 [===========>..................] - ETA: 0s

110/156 [====================>.........] - ETA: 0s

152/156 [============================>.] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 60/156 [==========>...................] - ETA: 0s

116/156 [=====================>........] - ETA: 0s

156/156 [==============================] - 0s 910us/step
MSE: 255249819.47112897
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 128, horizon 7, window 7
  1/156 [..............................] - ETA: 4s

 52/156 [=========>....................] - ETA: 0s

 91/156 [================>.............] - ETA: 0s

134/156 [========================>.....] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 0s

 57/156 [=========>....................] - ETA: 0s

123/156 [======================>.......] - ETA: 0s

156/156 [==============================] - 0s 911us/step
  1/156 [..............................] - ETA: 2s

 81/156 [==============>...............] - ETA: 0s

156/156 [==============================] - 0s 708us/step
MSE: 242914338.48317882
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 16, horizon 7, window 7
  1/156 [..............................] - ETA: 2s

 75/156 [=============>................] - ETA: 0s

138/156 [=========================>....] - ETA: 0s

156/156 [==============================] - 0s 910us/step
  1/156 [..............................] - ETA: 2s

 63/156 [===========>..................] - ETA: 0s

117/156 [=====================>........] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 66/156 [===========>..................] - ETA: 0s

121/156 [======================>.......] - ETA: 0s

156/156 [==============================] - 0s 914us/step
MSE: 295082787.8360931
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 32, horizon 7, window 7
  1/156 [..............................] - ETA: 4s

 61/156 [==========>...................] - ETA: 0s

100/156 [==================>...........] - ETA: 0s

155/156 [============================>.] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 70/156 [============>.................] - ETA: 0s

129/156 [=======================>......] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 33/156 [=====>........................] - ETA: 0s

 81/156 [==============>...............] - ETA: 0s

128/156 [=======================>......] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
MSE: 163405079.9536405
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 64, horizon 7, window 7
  1/156 [..............................] - ETA: 4s

 81/156 [==============>...............] - ETA: 0s

135/156 [========================>.....] - ETA: 0s

156/156 [==============================] - 0s 942us/step
  1/156 [..............................] - ETA: 2s

 89/156 [================>.............] - ETA: 0s

156/156 [==============================] - 0s 709us/step
  1/156 [..............................] - ETA: 2s

 52/156 [=========>....................] - ETA: 0s

102/156 [==================>...........] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
MSE: 486387688.5485044
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 128, horizon 7, window 7
  1/156 [..............................] - ETA: 2s

 56/156 [=========>....................] - ETA: 0s

 98/156 [=================>............] - ETA: 0s

145/156 [==========================>...] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 1s

 62/156 [==========>...................] - ETA: 0s

136/156 [=========================>....] - ETA: 0s

156/156 [==============================] - 0s 911us/step
  1/156 [..............................] - ETA: 1s

 81/156 [==============>...............] - ETA: 0s

156/156 [==============================] - 0s 709us/step
MSE: 442727865.38982564
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 16, horizon 7, window 7
  1/156 [..............................] - ETA: 4s

 82/156 [==============>...............] - ETA: 0s

149/156 [===========================>..] - ETA: 0s

156/156 [==============================] - 0s 810us/step
  1/156 [..............................] - ETA: 2s

 37/156 [======>.......................] - ETA: 0s

 76/156 [=============>................] - ETA: 0s

144/156 [==========================>...] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 50/156 [========>.....................] - ETA: 0s

 90/156 [================>.............] - ETA: 0s

142/156 [==========================>...] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
MSE: 146912741.28729892
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 32, horizon 7, window 7
  1/156 [..............................] - ETA: 4s

 76/156 [=============>................] - ETA: 0s

130/156 [========================>.....] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 89/156 [================>.............] - ETA: 0s

156/156 [==============================] - 0s 708us/step
  1/156 [..............................] - ETA: 2s

 33/156 [=====>........................] - ETA: 0s

 76/156 [=============>................] - ETA: 0s

155/156 [============================>.] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
MSE: 183267573.1817291
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 64, horizon 7, window 7
  1/156 [..............................] - ETA: 7s

 87/156 [===============>..............] - ETA: 0s

155/156 [============================>.] - ETA: 0s

156/156 [==============================] - 0s 809us/step
  1/156 [..............................] - ETA: 2s

 79/156 [==============>...............] - ETA: 0s

156/156 [==============================] - 0s 709us/step
  1/156 [..............................] - ETA: 1s

 49/156 [========>.....................] - ETA: 0s

 98/156 [=================>............] - ETA: 0s

148/156 [===========================>..] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
MSE: 178230073.77957582
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 128, horizon 7, window 7
  1/156 [..............................] - ETA: 4s

 55/156 [=========>....................] - ETA: 0s

104/156 [===================>..........] - ETA: 0s

142/156 [==========================>...] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 66/156 [===========>..................] - ETA: 0s

124/156 [======================>.......] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 58/156 [==========>...................] - ETA: 0s

113/156 [====================>.........] - ETA: 0s

152/156 [============================>.] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
MSE: 168902119.66174957
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 16, horizon 7, window 7
  1/156 [..............................] - ETA: 2s

 67/156 [===========>..................] - ETA: 0s

124/156 [======================>.......] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 54/156 [=========>....................] - ETA: 0s

115/156 [=====================>........] - ETA: 0s

156/156 [==============================] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 4s

 90/156 [================>.............] - ETA: 0s

156/156 [==============================] - 0s 710us/step
MSE: 228090264.60879663
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 32, horizon 7, window 7
  1/156 [..............................] - ETA: 2s

 61/156 [==========>...................] - ETA: 0s

128/156 [=======================>......] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 99/156 [==================>...........] - ETA: 0s

156/156 [==============================] - 0s 708us/step
  1/156 [..............................] - ETA: 2s

 54/156 [=========>....................] - ETA: 0s

 96/156 [=================>............] - ETA: 0s

154/156 [============================>.] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
MSE: 312973633.08554476
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 64, horizon 7, window 7
  1/156 [..............................] - ETA: 4s

 47/156 [========>.....................] - ETA: 0s

 96/156 [=================>............] - ETA: 0s

152/156 [============================>.] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 2s

 90/156 [================>.............] - ETA: 0s

156/156 [==============================] - 0s 709us/step
  1/156 [..............................] - ETA: 0s

 57/156 [=========>....................] - ETA: 0s

117/156 [=====================>........] - ETA: 0s

156/156 [==============================] - 0s 914us/step
MSE: 214869937.69132993
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 128, horizon 7, window 7
  1/156 [..............................] - ETA: 4s

 71/156 [============>.................] - ETA: 0s

155/156 [============================>.] - ETA: 0s

156/156 [==============================] - 0s 810us/step
  1/156 [..............................] - ETA: 3s

 54/156 [=========>....................] - ETA: 0s

105/156 [===================>..........] - ETA: 0s

148/156 [===========================>..] - ETA: 0s

156/156 [==============================] - 0s 1ms/step
  1/156 [..............................] - ETA: 0s

 59/156 [==========>...................] - ETA: 0s

115/156 [=====================>........] - ETA: 0s

156/156 [==============================] - 0s 910us/step
MSE: 325043187.6054645
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 16, horizon 14, window 14
  1/155 [..............................] - ETA: 4s

 67/155 [===========>..................] - ETA: 0s

105/155 [===================>..........] - ETA: 0s

142/155 [==========================>...] - ETA: 0s

155/155 [==============================] - 0s 1ms/step
  1/155 [..............................] - ETA: 2s

 58/155 [==========>...................] - ETA: 0s

120/155 [======================>.......] - ETA: 0s

155/155 [==============================] - 0s 1ms/step
  1/155 [..............................] - ETA: 2s

 59/155 [==========>...................] - ETA: 0s

 99/155 [==================>...........] - ETA: 0s

140/155 [==========================>...] - ETA: 0s

155/155 [==============================] - 0s 1ms/step
MSE: 26218487.570263263
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 32, horizon 14, window 14
  1/155 [..............................] - ETA: 4s

 64/155 [===========>..................] - ETA: 0s

112/155 [====================>.........] - ETA: 0s

155/155 [==============================] - 0s 1ms/step
  1/155 [..............................] - ETA: 2s

 60/155 [==========>...................] - ETA: 0s

 99/155 [==================>...........] - ETA: 0s

155/155 [==============================] - 0s 1ms/step
  1/155 [..............................] - ETA: 0s

 55/155 [=========>....................] - ETA: 0s

119/155 [======================>.......] - ETA: 0s

155/155 [==============================] - 0s 919us/step
MSE: 354814412.8587937
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 64, horizon 14, window 14
  1/155 [..............................] - ETA: 5s

 45/155 [=======>......................] - ETA: 0s

 89/155 [================>.............] - ETA: 0s

132/155 [========================>.....] - ETA: 0s

155/155 [==============================] - 0s 1ms/step
  1/155 [..............................] - ETA: 2s

 54/155 [=========>....................] - ETA: 0s

139/155 [=========================>....] - ETA: 0s

155/155 [==============================] - 0s 916us/step
  1/155 [..............................] - ETA: 2s

 77/155 [=============>................] - ETA: 0s

134/155 [========================>.....] - ETA: 0s

155/155 [==============================] - 0s 1ms/step
MSE: 232426521.81235558
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 128, horizon 14, window 14
  1/155 [..............................] - ETA: 4s

 45/155 [=======>......................] - ETA: 0s

124/155 [=======================>......] - ETA: 0s

155/155 [==============================] - 0s 916us/step
  1/155 [..............................] - ETA: 2s

 65/155 [===========>..................] - ETA: 0s

113/155 [====================>.........] - ETA: 0s

152/155 [============================>.] - ETA: 0s

155/155 [==============================] - 0s 1ms/step
  1/155 [..............................] - ETA: 2s

 64/155 [===========>..................] - ETA: 0s

150/155 [============================>.] - ETA: 0s

155/155 [==============================] - 0s 817us/step
MSE: 262543640.4208935
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 16, horizon 14, window 14
  1/155 [..............................] - ETA: 4s

 79/155 [==============>...............] - ETA: 0s

134/155 [========================>.....] - ETA: 0s

155/155 [==============================] - 0s 921us/step
  1/155 [..............................] - ETA: 2s

 77/155 [=============>................] - ETA: 0s

130/155 [========================>.....] - ETA: 0s

155/155 [==============================] - 0s 814us/step
  1/155 [..............................] - ETA: 0s

 70/155 [============>.................] - ETA: 0s

147/155 [===========================>..] - ETA: 0s

155/155 [==============================] - 0s 804us/step
MSE: 118298541.84114385
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 32, horizon 14, window 14
  1/155 [..............................] - ETA: 4s

 92/155 [================>.............] - ETA: 0s
---------------------------------------------------------------------------
KeyboardInterrupt                         Traceback (most recent call last)
Cell In[11], line 9
      5 neurons_list=[10, 100, 1000,10000]
      8 datos=data['Price']
----> 9 validation_metrics_price,test_metrics_price,train_metrics_price,residual_hist_price,best_model_price,params_best_model_price,residuals_bestmodel_price=busqueda (datos,windows,horizons,dropout_rates,batchsizes,neurons_list)

Cell In[10], line 47, in busqueda(datos, windows, horizons, dropout_rates, batchsizes, neurons_list)
     39 history = model.fit(
     40     x_train, y_train,
     41     validation_data=(x_val, y_val),
     42     callbacks=[early_stop],
     43     epochs=1, batch_size=batchsize, verbose=0
     44 )
     46 # Predicciones y cálculo de residuos
---> 47 val_pred = model.predict(x_val)
     48 test_pred = model.predict(x_test)
     49 train_pred = model.predict(x_train)

File ~\anaconda3\envs\ml_venv\lib\site-packages\keras\utils\traceback_utils.py:65, in filter_traceback.<locals>.error_handler(*args, **kwargs)
     63 filtered_tb = None
     64 try:
---> 65     return fn(*args, **kwargs)
     66 except Exception as e:
     67     filtered_tb = _process_traceback_frames(e.__traceback__)

File ~\anaconda3\envs\ml_venv\lib\site-packages\keras\engine\training.py:2251, in Model.predict(self, x, batch_size, verbose, steps, callbacks, max_queue_size, workers, use_multiprocessing)
   2249 for _, iterator in data_handler.enumerate_epochs():  # Single epoch.
   2250     with data_handler.catch_stop_iteration():
-> 2251         for step in data_handler.steps():
   2252             callbacks.on_predict_batch_begin(step)
   2253             tmp_batch_outputs = self.predict_function(iterator)

File ~\anaconda3\envs\ml_venv\lib\site-packages\keras\engine\data_adapter.py:1374, in DataHandler.steps(self)
   1372 if self._insufficient_data:  # Set by `catch_stop_iteration`.
   1373     break
-> 1374 original_spe = self._steps_per_execution.numpy().item()
   1375 can_run_full_execution = (
   1376     original_spe == 1
   1377     or self._inferred_steps is None
   1378     or self._inferred_steps - self._current_step >= original_spe
   1379 )
   1381 if can_run_full_execution:

File ~\anaconda3\envs\ml_venv\lib\site-packages\tensorflow\python\ops\resource_variable_ops.py:637, in BaseResourceVariable.numpy(self)
    635 def numpy(self):
    636   if context.executing_eagerly():
--> 637     return self.read_value().numpy()
    638   raise NotImplementedError(
    639       "numpy() is only available when eager execution is enabled.")

File ~\anaconda3\envs\ml_venv\lib\site-packages\tensorflow\python\ops\resource_variable_ops.py:725, in BaseResourceVariable.read_value(self)
    716 """Constructs an op which reads the value of this variable.
    717 
    718 Should be used when there are multiple reads, or when it is desirable to
   (...)
    722   The value of the variable.
    723 """
    724 with ops.name_scope("Read"):
--> 725   value = self._read_variable_op()
    726 # Return an identity so it can get placed on whatever device the context
    727 # specifies instead of the device where the variable is.
    728 return array_ops.identity(value)

File ~\anaconda3\envs\ml_venv\lib\site-packages\tensorflow\python\ops\resource_variable_ops.py:704, in BaseResourceVariable._read_variable_op(self, no_copy)
    702       result = read_and_set_handle(no_copy)
    703 else:
--> 704   result = read_and_set_handle(no_copy)
    706 if not context.executing_eagerly():
    707   # Note that if a control flow context is active the input of the read op
    708   # might not actually be the handle. This line bypasses it.
    709   tape.record_operation(
    710       "ReadVariableOp", [result], [self.handle],
    711       backward_function=lambda x: [x],
    712       forward_function=lambda x: [x])

File ~\anaconda3\envs\ml_venv\lib\site-packages\tensorflow\python\ops\resource_variable_ops.py:694, in BaseResourceVariable._read_variable_op.<locals>.read_and_set_handle(no_copy)
    692 if no_copy and forward_compat.forward_compatible(2022, 5, 3):
    693   gen_resource_variable_ops.disable_copy_on_read(self.handle)
--> 694 result = gen_resource_variable_ops.read_variable_op(
    695     self.handle, self._dtype)
    696 _maybe_set_handle_data(self._dtype, self.handle, result)
    697 return result

File ~\anaconda3\envs\ml_venv\lib\site-packages\tensorflow\python\ops\gen_resource_variable_ops.py:524, in read_variable_op(resource, dtype, name)
    522 if tld.is_eager:
    523   try:
--> 524     _result = pywrap_tfe.TFE_Py_FastPathExecute(
    525       _ctx, "ReadVariableOp", name, resource, "dtype", dtype)
    526     return _result
    527   except _core._NotOkStatusException as e:

KeyboardInterrupt: 
print(params_best_model_price)
{'neurons': 100, 'batchsize': 16, 'dropout_rate': 0.4, 'horizon': 7, 'window': 7, 'MSE': 2693138.4001013227}

A diferencia de las RNN redes neuronales recurrentes el modelo mpl es rápido por que permite hacer la optimización con todos los posibles parametros. los mejores resultados fueron con la combinación {‘neurons’: 10000, ‘batchsize’: 32, ‘dropout_rate’: 0.4, ‘horizon’: 7, ‘window’: 7, ‘MSE’: 2633246.2263151007}

import pandas as pd
import numpy as np
from statsmodels.stats.diagnostic import acorr_ljungbox
from statsmodels.graphics.gofplots import qqplot
from statsmodels.tsa.stattools import acf
import matplotlib.pyplot as plt
import seaborn as sns

Residuales#

tomamos los residuos del mejor modelo para su evaluación y analisamos los residuales de cada ventana, además se mostraran las graficas para 5 ventanas aleatorias

res=residuals_bestmodel_price
ljung_box_pvalues = []

for i, ventana in enumerate(res):
    ventana = np.array(ventana)
    ljung_box_pvalue = acorr_ljungbox(ventana, lags=[6], return_df=True)['lb_pvalue'].values[0]
    ljung_box_pvalues.append(ljung_box_pvalue)
df_resultados = pd.DataFrame({
    'Ventana': range(1, len(res) + 1),
    'LJung-Box (p-value)': ljung_box_pvalues
})

print(df_resultados.head(10))
# Seleccionar una muestra aleatoria de 5 ventanas para graficar
muestras = np.random.choice(len(res), size=5, replace=False)

for idx in muestras:
    ventana = np.array(res[idx])
    
    plt.figure(figsize=(4, 4))
    plt.plot(ventana, marker='o')
    plt.title(f'Serie de Residuos - Ventana {idx + 1}')
    plt.xlabel('Índice')
    plt.ylabel('Residuos')
    plt.show()

    
    qqplot(ventana, line='s')
    plt.title(f'QQPlot - Ventana {idx + 1}')
    plt.show()

    
    acf_vals = acf(ventana, nlags=min(10, len(ventana) - 1))
    plt.figure(figsize=(4, 4))
    plt.stem(range(len(acf_vals)), acf_vals, use_line_collection=True)
    plt.title(f'ACF de Residuos - Ventana {idx + 1}')
    plt.xlabel('Lags')
    plt.ylabel('Autocorrelación')
    plt.show()
   Ventana  LJung-Box (p-value)
0        1             0.490125
1        2             0.490125
2        3             0.490125
3        4             0.490125
4        5             0.490125
5        6             0.490125
6        7             0.490125
7        8             0.490125
8        9             0.490125
9       10             0.490125
_images/2685c5cc75f160d8185db99a08d5ef74a2fc8604f7bc5fa6d160819583c870a5.png _images/b0fb9995401a8cd730de84ce0bc39ec445be26a7789a3e6b97cc8dd74674bbe0.png
C:\Users\claud\AppData\Local\Temp\ipykernel_17932\1560686776.py:34: MatplotlibDeprecationWarning:

The 'use_line_collection' parameter of stem() was deprecated in Matplotlib 3.6 and will be removed two minor releases later. If any parameter follows 'use_line_collection', they should be passed as keyword, not positionally.
_images/a5d436f55bcd1d616725f43b1911c7839bc16d96b23d1b318f9303cd2cef9e74.png _images/c16d7ecb57992dd4f933ddf55bd4c5e7517bffea7214b18d340f6344b0de05ec.png _images/18165ccf9c102f818216d7d331a810269595d44b0e8c0b9db817b61d7051d1b5.png _images/8e2a03af17c41d282718c4e0413439d7213d255a9c0aba906f27c21036f851d0.png _images/bdc68a14639c6a0106ad7bcf25f6f9953ef16433b5dbbff59460e126ca43f772.png _images/8b3e78bf7d300e1d40dc23dff01427c9ee4df1fd9060dc3820f3cf7f811a3a47.png _images/f127487131414f929f61e8bde8919bf845dd78a8a41ed4d1e31e8cf29ea91ceb.png _images/3cfba87d8be626fea9b1e89467b05f544e94729e126fbe06637ab6a1b7c3a8a7.png _images/8571f53222f5c66c6ee1beecf1ff10d5525ef1f9545d9436305497d2dbd1611b.png _images/89dc9fc3210784da3203e0d19405f2146b84ad5ada21e7ae09a8ff8d89f888d0.png _images/b86ca481bee486683380bd478085cd82f928ea665cd67033bb52da9ffea5f6a1.png _images/aa5d0246a3e4ed24fbb30cb5804cc20ad8fad22c54639eaea2245de038502d32.png _images/3e0e2d54d1b7a19b471957c3001ff6f88d9224b3b198ac84bf55ab47ae7d8bcb.png

De los residuales podemos secir que no cumplen cumplen, no distribuyen normal, tienen asimetria, además no son independientes.

metrics_list = validation_metrics_price  # Lista que contiene los diccionarios
metrics= []

for i in metrics_list:
        
        metrics.append(i)

Tabla de todos los modelos, sus parametros y sus metricas#

metricasval=pd.DataFrame(metrics)
metricasval = metricasval.drop_duplicates()
metricasval
neurons batchsize Dropout horizon window MAPE MAE MSE RMSE R2
0 10 16 0.2 7 7 35.333756 3355.121882 6.487403e+07 8054.441555 0.738040
1 10 32 0.2 7 7 29.758144 2993.962292 4.036521e+07 6353.361853 0.836394
2 10 64 0.2 7 7 17.188263 1605.248554 1.405753e+07 3749.336689 0.943375
3 10 128 0.2 7 7 53.677165 5813.922762 1.406435e+08 11859.319650 0.432064
4 10 16 0.4 7 7 39.234845 3820.778470 5.164895e+07 7186.720593 0.790747
... ... ... ... ... ... ... ... ... ... ...
251 10000 128 0.6 28 28 17.230916 1445.302592 1.037050e+07 3220.326157 0.956003
252 10000 16 0.8 28 28 17.654894 1436.355466 1.030160e+07 3209.611135 0.956293
253 10000 32 0.8 28 28 16.729782 1336.242749 9.163725e+06 3027.164544 0.961137
254 10000 64 0.8 28 28 17.945161 1474.242176 1.068180e+07 3268.302812 0.954671
255 10000 128 0.8 28 28 18.524463 1545.390375 1.162027e+07 3408.851647 0.950681

256 rows × 10 columns

fig = px.line(metricasval, y='MSE', title='MSE vs Índice', labels={'index': 'Índice', 'MSE': 'MSE'})
fig.show()

En esta figura podemos observar el MSE a lo largo de las iteraciones, vemos que a medida que se aumnetaron las neuronas el resultado mejoraba. Además delemitar la busqueda a partir de los parametros que ya se sabía que tenian buen desempeño permitió estabilizar la metrica.

Boxplot#

Ahora compararemos los errores en el entrenamiento, prueba y test con la metrica mape porque esta representa los errores de manera porcentual

metrics_list = train_metrics_price  
metricas_train = []

for i in metrics_list:
        
    metricas_train.append(i)
metricas_train=pd.DataFrame(metricas_train)
metricas_train = metricas_train.drop_duplicates()
metrics_list = test_metrics_price

metricas_test = []

for i in metrics_list:
    
        
    metricas_test.append(i)
metricas_test=pd.DataFrame(metricas_test)
metricas_test = metricas_test.drop_duplicates()
errores_train =  metricas_train['MAPE']
errores_val=   metricasval['MAPE']
errores_test =  metricas_test['MAPE']

# Crear una lista que contenga todas las listas de residuos
residuos = [errores_train, errores_val, errores_test]

# Crear el Boxplot usando Seaborn
plt.figure(figsize=(8, 6))
sns.boxplot(data=residuos)

# Personalizar el gráfico
plt.title('Comparación de Residuos entre 3 Listas')
plt.xlabel('Lista')
plt.ylabel('MAPE')
plt.xticks(ticks=[0, 1, 2], labels=['Residuos train', 'Residuos val', 'Residuos test'])

# Mostrar el gráfico
plt.show()
_images/31a3f0507333a5969eedf03c5afcba70ec0ceba797309a753d1d53bd790e0478.png

Las medianas son similares al igual que los las cajas porque al manejar la metodología de ventanas deslizantes los conjuntos son iguales a excepción de la primera y ultima ventana. sin embargo las medianas se van reduciendo porque el modelo aprende luego de evaluar el conjunto de validación, reajuste del modelo.

Los puntos por fuera de las cajas implican que el modelo suavizó picos o fluctuaciones atípicas

Prediciones#

mejormodelo=best_model_price

X_train, Y_train, X_val, Y_val, X_test, Y_test=create_sliding_windows(datos, 7, 7)

train=mejormodelo.predict(X_train)
val=mejormodelo.predict(X_val)
test=mejormodelo.predict(X_test)
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 1ms/step
156/156 [==============================] - 0s 1ms/step

Aquí podemos ver la predicción de las ventanas para entrenamiento de manera independiente

train_data = []
for i, row in enumerate(train):
    for j, value in enumerate(row):
        train_data.append({
            "Conjunto": "Train", 
            "Índice": i + 1 + j, 
            "Valor": value
        })
        
val_data = []
for i, row in enumerate(val):
    for j, value in enumerate(row):
        train_data.append({
            "Conjunto": "val",  
            "Índice": i + 8+ j, 
            "Valor": value
        })
test_data = []
for i, row in enumerate(test):
    for j, value in enumerate(row):
        train_data.append({
            "Conjunto": "test",  
            "Índice": i + 16+ j, 
            "Valor": value
        })

# Preparar los datos para la lista 'datos'
datos_data = []
for i, value in enumerate(data['Price']):
    datos_data.append({
        "Conjunto": "Datos", 
        "Fila": "Serie Datos", 
        "Índice": i+1,  
        "Valor": value
    })

# Combinar ambos conjuntos de datos en un DataFrame
df_plot = pd.DataFrame(train_data + datos_data+val_data+test_data)

# Crear el gráfico con Plotly Express
fig = px.line(
    df_plot, 
    x="Índice", 
    y="Valor", 
    color="Conjunto",  # Diferenciar 'Train' y 'Datos'
      # Mantener la separación por filas
    markers=True, 
    title="Gráfico de Train y Lista Datos"
)

# Mostrar la figura
fig.show()

En la grafica se puede los horizones de predicción para cada ventana. el conjunto de train es igual al de validación sin embargo la prueba se mantiene con diferencia

Serie Change%#

from sklearn.preprocessing import MinMaxScaler

# Crear el objeto escalador

datos=data['Change %']
datos = pd.Series(datos).str.replace('%', '', regex=False).astype(float) / 100

scaler = MinMaxScaler()
datos = np.array(datos).reshape(-1, 1)
# Escala los datos
datos = scaler.fit_transform(datos).flatten()+1
datos.shape
(4999,)

Para esta serie se hizo una modificación especial, no solo se esscalaron los datos sino que se les sumó 1 para evitar tener errores por valores en 0, a la hora de calcular las métricas

windows=[7,14,21,28]
horizons=[7,14,21,28]
dropout_rates=[0.2,0.4,0.6,0.8]
batchsizes=[16,32,64,128]
neurons_list=[10, 100, 1000,10000]

validation_metrics_ch,test_metrics_ch,train_metrics_ch,residual_hist_ch,best_model_ch,params_best_model_ch,residuals_bestmodel_ch=busqueda (datos,windows,horizons,dropout_rates,batchsizes,neurons_list)
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 1ms/step
156/156 [==============================] - 0s 952us/step
156/156 [==============================] - 0s 1ms/step
MSE: 0.029126418288331533
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 890us/step
156/156 [==============================] - 0s 714us/step
156/156 [==============================] - 0s 911us/step
MSE: 0.598471086707204
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 688us/step
156/156 [==============================] - 0s 781us/step
156/156 [==============================] - 0s 845us/step
MSE: 0.6634026219982635
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 903us/step
156/156 [==============================] - 0s 786us/step
156/156 [==============================] - 0s 731us/step
MSE: 1.1810979741074275
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 840us/step
156/156 [==============================] - 0s 819us/step
156/156 [==============================] - 0s 914us/step
MSE: 0.2956042068618328
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 1ms/step
156/156 [==============================] - 0s 1ms/step
156/156 [==============================] - 0s 1ms/step
MSE: 0.6390115840798875
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 644us/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 1ms/step
MSE: 0.7311779647893816
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 929us/step
156/156 [==============================] - 0s 1ms/step
156/156 [==============================] - 0s 989us/step
MSE: 0.8149639735260521
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 893us/step
156/156 [==============================] - 0s 865us/step
156/156 [==============================] - 0s 815us/step
MSE: 0.17344569994533016
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 633us/step
156/156 [==============================] - 0s 1ms/step
156/156 [==============================] - 0s 857us/step
MSE: 0.39928413015059494
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 900us/step
156/156 [==============================] - 0s 918us/step
156/156 [==============================] - 0s 879us/step
MSE: 1.0625030764925891
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 774us/step
156/156 [==============================] - 0s 740us/step
156/156 [==============================] - 0s 846us/step
MSE: 1.0514697882344353
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 846us/step
156/156 [==============================] - 0s 724us/step
156/156 [==============================] - 0s 853us/step
MSE: 0.7797809717183349
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 877us/step
156/156 [==============================] - 0s 743us/step
156/156 [==============================] - 0s 924us/step
MSE: 1.1427714822417034
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 955us/step
156/156 [==============================] - 0s 856us/step
156/156 [==============================] - 0s 917us/step
MSE: 0.957443532851966
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 812us/step
156/156 [==============================] - 0s 858us/step
156/156 [==============================] - 0s 826us/step
MSE: 0.510351257299303
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 842us/step
155/155 [==============================] - 0s 804us/step
155/155 [==============================] - 0s 759us/step
MSE: 0.017484059817066123
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 762us/step
155/155 [==============================] - 0s 783us/step
155/155 [==============================] - 0s 737us/step
MSE: 0.15920259006327755
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 732us/step
155/155 [==============================] - 0s 1ms/step
155/155 [==============================] - 0s 657us/step
MSE: 0.7073090603785996
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 128, horizon 14, window 14
155/155 [==============================] - 0s 723us/step
155/155 [==============================] - 0s 843us/step
155/155 [==============================] - 0s 768us/step
MSE: 1.2300207883961654
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 774us/step
155/155 [==============================] - 0s 825us/step
155/155 [==============================] - 0s 844us/step
MSE: 0.05332591278696725
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 789us/step
155/155 [==============================] - 0s 710us/step
155/155 [==============================] - 0s 782us/step
MSE: 0.5409528988118931
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 719us/step
155/155 [==============================] - 0s 847us/step
155/155 [==============================] - 0s 709us/step
MSE: 0.9037656451596927
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 128, horizon 14, window 14
155/155 [==============================] - 0s 854us/step
155/155 [==============================] - 0s 989us/step
155/155 [==============================] - 0s 729us/step
MSE: 0.8744435699672406
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 777us/step
155/155 [==============================] - 0s 853us/step
155/155 [==============================] - 0s 826us/step
MSE: 0.15904761719738908
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 831us/step
155/155 [==============================] - 0s 926us/step
155/155 [==============================] - 0s 783us/step
MSE: 0.804203942032948
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 935us/step
155/155 [==============================] - 0s 719us/step
155/155 [==============================] - 0s 791us/step
MSE: 1.1280559391366234
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 128, horizon 14, window 14
155/155 [==============================] - 0s 778us/step
155/155 [==============================] - 0s 794us/step
155/155 [==============================] - 0s 792us/step
MSE: 0.8547863329341869
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 782us/step
155/155 [==============================] - 0s 909us/step
155/155 [==============================] - 0s 790us/step
MSE: 0.44241515993244596
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 881us/step
155/155 [==============================] - 0s 720us/step
155/155 [==============================] - 0s 779us/step
MSE: 0.7532231676142047
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 797us/step
155/155 [==============================] - 0s 810us/step
155/155 [==============================] - 0s 750us/step
MSE: 0.7333960741844973
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 128, horizon 14, window 14
155/155 [==============================] - 0s 736us/step
155/155 [==============================] - 0s 781us/step
155/155 [==============================] - 0s 720us/step
MSE: 1.3256002039155148
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 16, horizon 21, window 21
154/154 [==============================] - 0s 892us/step
154/154 [==============================] - 0s 811us/step
154/154 [==============================] - 0s 812us/step
MSE: 0.04365473864444865
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 32, horizon 21, window 21
154/154 [==============================] - 0s 894us/step
154/154 [==============================] - 0s 797us/step
154/154 [==============================] - 0s 1ms/step
MSE: 0.12955174450016968
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 64, horizon 21, window 21
154/154 [==============================] - 0s 790us/step
154/154 [==============================] - 0s 736us/step
154/154 [==============================] - 0s 700us/step
MSE: 1.2289482484828917
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 128, horizon 21, window 21
154/154 [==============================] - 0s 724us/step
154/154 [==============================] - 0s 797us/step
154/154 [==============================] - 0s 786us/step
MSE: 1.0672305489381888
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 16, horizon 21, window 21
154/154 [==============================] - 0s 853us/step
154/154 [==============================] - 0s 824us/step
154/154 [==============================] - 0s 975us/step
MSE: 0.15634068128310302
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 32, horizon 21, window 21
154/154 [==============================] - 0s 1ms/step
154/154 [==============================] - 0s 948us/step
154/154 [==============================] - 0s 723us/step
MSE: 0.3413416275713714
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 64, horizon 21, window 21
154/154 [==============================] - 0s 724us/step
154/154 [==============================] - 0s 817us/step
154/154 [==============================] - 0s 847us/step
MSE: 1.1297930352314642
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 128, horizon 21, window 21
154/154 [==============================] - 0s 1ms/step
154/154 [==============================] - 0s 725us/step
154/154 [==============================] - 0s 652us/step
MSE: 0.9115710844804316
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 16, horizon 21, window 21
154/154 [==============================] - 0s 867us/step
154/154 [==============================] - 0s 653us/step
154/154 [==============================] - 0s 720us/step
MSE: 0.5754869087096219
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 32, horizon 21, window 21
154/154 [==============================] - 0s 656us/step
154/154 [==============================] - 0s 651us/step
154/154 [==============================] - 0s 680us/step
MSE: 0.5534654836090753
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 64, horizon 21, window 21
154/154 [==============================] - 0s 657us/step
154/154 [==============================] - 0s 652us/step
154/154 [==============================] - 0s 693us/step
MSE: 1.2557359048393597
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 128, horizon 21, window 21
154/154 [==============================] - 0s 943us/step
154/154 [==============================] - 0s 912us/step
154/154 [==============================] - 0s 728us/step
MSE: 1.0665063466634708
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 16, horizon 21, window 21
154/154 [==============================] - 0s 725us/step
154/154 [==============================] - 0s 675us/step
154/154 [==============================] - 0s 711us/step
MSE: 0.5131359010863987
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 32, horizon 21, window 21
154/154 [==============================] - 0s 715us/step
154/154 [==============================] - 0s 798us/step
154/154 [==============================] - 0s 724us/step
MSE: 0.780506640914223
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 64, horizon 21, window 21
154/154 [==============================] - 0s 678us/step
154/154 [==============================] - 0s 724us/step
154/154 [==============================] - 0s 651us/step
MSE: 1.3898547021496124
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 128, horizon 21, window 21
154/154 [==============================] - 0s 651us/step
154/154 [==============================] - 0s 661us/step
154/154 [==============================] - 0s 651us/step
MSE: 1.1412897984472685
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 16, horizon 28, window 28
153/153 [==============================] - 0s 659us/step
153/153 [==============================] - 0s 938us/step
153/153 [==============================] - 0s 1ms/step
MSE: 0.03129751208236213
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 32, horizon 28, window 28
153/153 [==============================] - 0s 725us/step
153/153 [==============================] - 0s 742us/step
153/153 [==============================] - 0s 664us/step
MSE: 0.33115352417990973
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 64, horizon 28, window 28
153/153 [==============================] - 0s 808us/step
153/153 [==============================] - 0s 915us/step
153/153 [==============================] - 0s 653us/step
MSE: 0.4927322301639191
Entrenando modelo con 10 neuronas, dropout 0.2, batch size 128, horizon 28, window 28
153/153 [==============================] - 0s 730us/step
153/153 [==============================] - 0s 729us/step
153/153 [==============================] - 0s 666us/step
MSE: 1.4626532251472788
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 16, horizon 28, window 28
153/153 [==============================] - 0s 655us/step
153/153 [==============================] - 0s 728us/step
153/153 [==============================] - 0s 1ms/step
MSE: 0.7414093214156037
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 32, horizon 28, window 28
153/153 [==============================] - 0s 660us/step
153/153 [==============================] - 0s 1ms/step
153/153 [==============================] - 0s 723us/step
MSE: 0.5419296070479284
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 64, horizon 28, window 28
153/153 [==============================] - 0s 659us/step
153/153 [==============================] - 0s 725us/step
153/153 [==============================] - 0s 651us/step
MSE: 0.5667199197647327
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10 neuronas, dropout 0.4, batch size 128, horizon 28, window 28
153/153 [==============================] - 0s 728us/step
153/153 [==============================] - 0s 709us/step
153/153 [==============================] - 0s 729us/step
MSE: 1.0225688140489237
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 16, horizon 28, window 28
153/153 [==============================] - 0s 656us/step
153/153 [==============================] - 0s 653us/step
153/153 [==============================] - 0s 1ms/step
MSE: 0.30470748991290997
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 32, horizon 28, window 28
153/153 [==============================] - 0s 706us/step
153/153 [==============================] - 0s 730us/step
153/153 [==============================] - 0s 652us/step
MSE: 0.43152866665161677
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 64, horizon 28, window 28
153/153 [==============================] - 0s 657us/step
153/153 [==============================] - 0s 778us/step
153/153 [==============================] - 0s 655us/step
MSE: 0.8081487627132166
Entrenando modelo con 10 neuronas, dropout 0.6, batch size 128, horizon 28, window 28
153/153 [==============================] - 0s 753us/step
153/153 [==============================] - 0s 703us/step
153/153 [==============================] - 0s 652us/step
MSE: 0.9484607619235952
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 16, horizon 28, window 28
153/153 [==============================] - 0s 652us/step
153/153 [==============================] - 0s 656us/step
153/153 [==============================] - 0s 1000us/step
MSE: 0.5509405384839535
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 32, horizon 28, window 28
153/153 [==============================] - 0s 729us/step
153/153 [==============================] - 0s 649us/step
153/153 [==============================] - 0s 728us/step
MSE: 0.7891907203699036
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 64, horizon 28, window 28
153/153 [==============================] - 0s 655us/step
153/153 [==============================] - 0s 670us/step
153/153 [==============================] - 0s 652us/step
MSE: 0.9136144925074279
Entrenando modelo con 10 neuronas, dropout 0.8, batch size 128, horizon 28, window 28
153/153 [==============================] - 0s 674us/step
153/153 [==============================] - 0s 719us/step
153/153 [==============================] - 0s 678us/step
MSE: 1.164631869374429
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 643us/step
156/156 [==============================] - 0s 735us/step
156/156 [==============================] - 0s 640us/step
MSE: 0.0006993974777520556
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 714us/step
156/156 [==============================] - 0s 697us/step
156/156 [==============================] - 0s 720us/step
MSE: 0.0011623295412578393
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 687us/step
156/156 [==============================] - 0s 718us/step
156/156 [==============================] - 0s 711us/step
MSE: 0.0017264273155600505
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 688us/step
156/156 [==============================] - 0s 856us/step
156/156 [==============================] - 0s 731us/step
MSE: 0.0020757906853675926
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 769us/step
156/156 [==============================] - 0s 640us/step
156/156 [==============================] - 0s 718us/step
MSE: 0.002836612249656291
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 642us/step
156/156 [==============================] - 0s 714us/step
156/156 [==============================] - 0s 712us/step
MSE: 0.0027108674520885745
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 714us/step
156/156 [==============================] - 0s 696us/step
156/156 [==============================] - 0s 727us/step
MSE: 0.005310971486847378
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 712us/step
156/156 [==============================] - 0s 715us/step
156/156 [==============================] - 0s 787us/step
MSE: 0.02845375633568052
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 715us/step
156/156 [==============================] - 0s 635us/step
156/156 [==============================] - 0s 715us/step
MSE: 0.010129611511529179
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 711us/step
156/156 [==============================] - 0s 700us/step
156/156 [==============================] - 0s 735us/step
MSE: 0.016744814799754492
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 719us/step
156/156 [==============================] - 0s 714us/step
156/156 [==============================] - 0s 901us/step
MSE: 0.014596840463353855
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 714us/step
156/156 [==============================] - 0s 807us/step
156/156 [==============================] - 0s 711us/step
MSE: 0.018724654240148363
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 645us/step
156/156 [==============================] - 0s 699us/step
156/156 [==============================] - 0s 714us/step
MSE: 0.024014002524472368
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 985us/step
156/156 [==============================] - 0s 890us/step
156/156 [==============================] - 0s 756us/step
MSE: 0.04284777895652703
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 786us/step
156/156 [==============================] - 0s 641us/step
156/156 [==============================] - 0s 715us/step
MSE: 0.08487264544137467
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 720us/step
156/156 [==============================] - 0s 786us/step
156/156 [==============================] - 0s 890us/step
MSE: 0.254519158523388
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 669us/step
155/155 [==============================] - 0s 712us/step
155/155 [==============================] - 0s 719us/step
MSE: 0.0011634860480301897
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 791us/step
155/155 [==============================] - 0s 801us/step
155/155 [==============================] - 0s 718us/step
MSE: 0.0014756349328123182
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 640us/step
155/155 [==============================] - 0s 644us/step
155/155 [==============================] - 0s 723us/step
MSE: 0.0025287460479905296
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 128, horizon 14, window 14
155/155 [==============================] - 0s 719us/step
155/155 [==============================] - 0s 718us/step
155/155 [==============================] - 0s 706us/step
MSE: 0.008970049328386987
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 704us/step
155/155 [==============================] - 0s 1ms/step
155/155 [==============================] - 0s 721us/step
MSE: 0.0057862018686702455
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 712us/step
155/155 [==============================] - 0s 699us/step
155/155 [==============================] - 0s 745us/step
MSE: 0.004641153152085198
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 788us/step
155/155 [==============================] - 0s 813us/step
155/155 [==============================] - 0s 649us/step
MSE: 0.0042092910077182405
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 128, horizon 14, window 14
155/155 [==============================] - 0s 1ms/step
155/155 [==============================] - 0s 829us/step
155/155 [==============================] - 0s 1ms/step
MSE: 0.09103257338479002
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 742us/step
155/155 [==============================] - 0s 792us/step
155/155 [==============================] - 0s 802us/step
MSE: 0.0068390768365092685
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 725us/step
155/155 [==============================] - 0s 1ms/step
155/155 [==============================] - 0s 700us/step
MSE: 0.018519134157820253
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 719us/step
155/155 [==============================] - 0s 688us/step
155/155 [==============================] - 0s 1ms/step
MSE: 0.04708720885356736
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 128, horizon 14, window 14
155/155 [==============================] - 0s 713us/step
155/155 [==============================] - 0s 703us/step
155/155 [==============================] - 0s 767us/step
MSE: 0.07536962174726425
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 739us/step
155/155 [==============================] - 0s 692us/step
155/155 [==============================] - 0s 655us/step
MSE: 0.015489341116529309
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 648us/step
155/155 [==============================] - 0s 720us/step
155/155 [==============================] - 0s 718us/step
MSE: 0.06033386699748839
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 717us/step
155/155 [==============================] - 0s 644us/step
155/155 [==============================] - 0s 737us/step
MSE: 0.11024484891677329
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 128, horizon 14, window 14
155/155 [==============================] - 0s 719us/step
155/155 [==============================] - 0s 711us/step
155/155 [==============================] - 0s 686us/step
MSE: 0.2599724113710407
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 16, horizon 21, window 21
154/154 [==============================] - 0s 727us/step
154/154 [==============================] - 0s 640us/step
154/154 [==============================] - 0s 793us/step
MSE: 0.0005463085245392704
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 32, horizon 21, window 21
154/154 [==============================] - 0s 721us/step
154/154 [==============================] - 0s 739us/step
154/154 [==============================] - 0s 840us/step
MSE: 0.0010647287449339657
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 64, horizon 21, window 21
154/154 [==============================] - 0s 748us/step
154/154 [==============================] - 0s 726us/step
154/154 [==============================] - 0s 776us/step
MSE: 0.0028238410097576206
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 128, horizon 21, window 21
154/154 [==============================] - 0s 724us/step
154/154 [==============================] - 0s 652us/step
154/154 [==============================] - 0s 870us/step
MSE: 0.011439973131365792
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 16, horizon 21, window 21
154/154 [==============================] - 0s 651us/step
154/154 [==============================] - 0s 1ms/step
154/154 [==============================] - 0s 726us/step
MSE: 0.006585785705676674
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 32, horizon 21, window 21
154/154 [==============================] - 0s 725us/step
154/154 [==============================] - 0s 724us/step
154/154 [==============================] - 0s 721us/step
MSE: 0.005639956946413866
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 64, horizon 21, window 21
154/154 [==============================] - 0s 724us/step
154/154 [==============================] - 0s 725us/step
154/154 [==============================] - 0s 725us/step
MSE: 0.011088319288616361
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 128, horizon 21, window 21
154/154 [==============================] - 0s 650us/step
154/154 [==============================] - 0s 753us/step
154/154 [==============================] - 0s 725us/step
MSE: 0.0145970362386004
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 16, horizon 21, window 21
154/154 [==============================] - 0s 750us/step
154/154 [==============================] - 0s 729us/step
154/154 [==============================] - 0s 944us/step
MSE: 0.006214686460382853
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 32, horizon 21, window 21
154/154 [==============================] - 0s 679us/step
154/154 [==============================] - 0s 745us/step
154/154 [==============================] - 0s 729us/step
MSE: 0.02187672676668942
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 64, horizon 21, window 21
154/154 [==============================] - 0s 743us/step
154/154 [==============================] - 0s 728us/step
154/154 [==============================] - 0s 724us/step
MSE: 0.03364851208436563
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 128, horizon 21, window 21
154/154 [==============================] - 0s 723us/step
154/154 [==============================] - 0s 1ms/step
154/154 [==============================] - 0s 797us/step
MSE: 0.08138253971542958
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 16, horizon 21, window 21
154/154 [==============================] - 0s 728us/step
154/154 [==============================] - 0s 651us/step
154/154 [==============================] - 0s 654us/step
MSE: 0.03617692773982323
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 32, horizon 21, window 21
154/154 [==============================] - 0s 729us/step
154/154 [==============================] - 0s 804us/step
154/154 [==============================] - 0s 651us/step
MSE: 0.05995552432973244
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 64, horizon 21, window 21
154/154 [==============================] - 0s 721us/step
154/154 [==============================] - 0s 717us/step
154/154 [==============================] - 0s 672us/step
MSE: 0.12490575426991597
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 128, horizon 21, window 21
154/154 [==============================] - 0s 1ms/step
154/154 [==============================] - 0s 723us/step
154/154 [==============================] - 0s 688us/step
MSE: 0.35774058202523457
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 16, horizon 28, window 28
153/153 [==============================] - 0s 722us/step
153/153 [==============================] - 0s 711us/step
153/153 [==============================] - 0s 654us/step
MSE: 0.0019195318536809499
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 32, horizon 28, window 28
153/153 [==============================] - 0s 711us/step
153/153 [==============================] - 0s 754us/step
153/153 [==============================] - 0s 731us/step
MSE: 0.0017477249597948278
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 64, horizon 28, window 28
153/153 [==============================] - 0s 945us/step
153/153 [==============================] - 0s 729us/step
153/153 [==============================] - 0s 679us/step
MSE: 0.004907972734505567
Entrenando modelo con 100 neuronas, dropout 0.2, batch size 128, horizon 28, window 28
153/153 [==============================] - 0s 660us/step
153/153 [==============================] - 0s 730us/step
153/153 [==============================] - 0s 730us/step
MSE: 0.007548181215698787
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 16, horizon 28, window 28
153/153 [==============================] - 0s 733us/step
153/153 [==============================] - 0s 728us/step
153/153 [==============================] - 0s 655us/step
MSE: 0.003927231876414184
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 32, horizon 28, window 28
153/153 [==============================] - 0s 717us/step
153/153 [==============================] - 0s 745us/step
153/153 [==============================] - 0s 732us/step
MSE: 0.011153347856457715
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 64, horizon 28, window 28
153/153 [==============================] - 0s 1ms/step
153/153 [==============================] - 0s 725us/step
153/153 [==============================] - 0s 747us/step
MSE: 0.009132158874276786
Entrenando modelo con 100 neuronas, dropout 0.4, batch size 128, horizon 28, window 28
153/153 [==============================] - 0s 777us/step
153/153 [==============================] - 0s 817us/step
153/153 [==============================] - 0s 729us/step
MSE: 0.038286012950572844
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 16, horizon 28, window 28
153/153 [==============================] - 0s 690us/step
153/153 [==============================] - 0s 820us/step
153/153 [==============================] - 0s 777us/step
MSE: 0.0037736472753622514
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 32, horizon 28, window 28
153/153 [==============================] - 0s 729us/step
153/153 [==============================] - 0s 1ms/step
153/153 [==============================] - 0s 728us/step
MSE: 0.018456412196452297
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 64, horizon 28, window 28
153/153 [==============================] - 0s 655us/step
153/153 [==============================] - 0s 656us/step
153/153 [==============================] - 0s 718us/step
MSE: 0.04630273697926953
Entrenando modelo con 100 neuronas, dropout 0.6, batch size 128, horizon 28, window 28
153/153 [==============================] - 0s 800us/step
153/153 [==============================] - 0s 730us/step
153/153 [==============================] - 0s 732us/step
MSE: 0.13483595504779738
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 16, horizon 28, window 28
153/153 [==============================] - 0s 703us/step
153/153 [==============================] - 0s 729us/step
153/153 [==============================] - 0s 660us/step
MSE: 0.03810560593207101
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 32, horizon 28, window 28
153/153 [==============================] - 0s 728us/step
153/153 [==============================] - 0s 688us/step
153/153 [==============================] - 0s 655us/step
MSE: 0.07514095055603011
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 64, horizon 28, window 28
153/153 [==============================] - 0s 779us/step
153/153 [==============================] - 0s 726us/step
153/153 [==============================] - 0s 950us/step
MSE: 0.18557145197066688
Entrenando modelo con 100 neuronas, dropout 0.8, batch size 128, horizon 28, window 28
153/153 [==============================] - 0s 747us/step
153/153 [==============================] - 0s 728us/step
153/153 [==============================] - 0s 744us/step
MSE: 0.3870953978291257
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 990us/step
156/156 [==============================] - 0s 727us/step
156/156 [==============================] - 0s 767us/step
MSE: 0.0003976307082860681
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 709us/step
156/156 [==============================] - 0s 714us/step
156/156 [==============================] - 0s 717us/step
MSE: 0.0004284681212929627
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 711us/step
156/156 [==============================] - 0s 640us/step
156/156 [==============================] - 0s 921us/step
MSE: 0.0004486598554473897
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 719us/step
156/156 [==============================] - 0s 1ms/step
156/156 [==============================] - 0s 777us/step
MSE: 0.00837651964370306
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 790us/step
156/156 [==============================] - 0s 642us/step
156/156 [==============================] - 0s 643us/step
MSE: 0.0004514667564201174
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 714us/step
156/156 [==============================] - 0s 825us/step
156/156 [==============================] - 0s 740us/step
MSE: 0.00045270024889187185
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 725us/step
156/156 [==============================] - 0s 991us/step
156/156 [==============================] - 0s 729us/step
MSE: 0.0004297236688159244
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 719us/step
156/156 [==============================] - 0s 702us/step
156/156 [==============================] - 0s 891us/step
MSE: 0.006025001159273493
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 1ms/step
156/156 [==============================] - 0s 914us/step
156/156 [==============================] - 0s 921us/step
MSE: 0.0027796731159465955
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 739us/step
156/156 [==============================] - 0s 832us/step
156/156 [==============================] - 0s 1ms/step
MSE: 0.0012084233440507934
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 718us/step
156/156 [==============================] - 0s 642us/step
156/156 [==============================] - 0s 733us/step
MSE: 0.0007133471376088217
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 723us/step
156/156 [==============================] - 0s 714us/step
156/156 [==============================] - 0s 697us/step
MSE: 0.008740432470081286
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 719us/step
156/156 [==============================] - 0s 717us/step
156/156 [==============================] - 0s 713us/step
MSE: 0.001011044011255417
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 644us/step
156/156 [==============================] - 0s 885us/step
156/156 [==============================] - 0s 830us/step
MSE: 0.0017994314854167203
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 1ms/step
156/156 [==============================] - 0s 1ms/step
156/156 [==============================] - 0s 758us/step
MSE: 0.0024391106171896696
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 778us/step
156/156 [==============================] - 0s 719us/step
156/156 [==============================] - 0s 639us/step
MSE: 0.011521248122515346
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 795us/step
155/155 [==============================] - 0s 684us/step
155/155 [==============================] - 0s 932us/step
MSE: 0.001427600153591764
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 789us/step
155/155 [==============================] - 0s 792us/step
155/155 [==============================] - 0s 779us/step
MSE: 0.00088121398781542
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 750us/step
155/155 [==============================] - 0s 727us/step
155/155 [==============================] - 0s 788us/step
MSE: 0.0004885735923402898
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 128, horizon 14, window 14
155/155 [==============================] - 0s 792us/step
155/155 [==============================] - 0s 791us/step
155/155 [==============================] - 0s 760us/step
MSE: 0.0028657428825541345
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 708us/step
155/155 [==============================] - 0s 750us/step
155/155 [==============================] - 0s 720us/step
MSE: 0.0005257546044809997
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 837us/step
155/155 [==============================] - 0s 808us/step
155/155 [==============================] - 0s 791us/step
MSE: 0.00048022401745829454
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 775us/step
155/155 [==============================] - 0s 726us/step
155/155 [==============================] - 0s 792us/step
MSE: 0.0005465501679190027
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 128, horizon 14, window 14
155/155 [==============================] - 0s 690us/step
155/155 [==============================] - 0s 682us/step
155/155 [==============================] - 0s 802us/step
MSE: 0.0030358348379870546
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 796us/step
155/155 [==============================] - 0s 821us/step
155/155 [==============================] - 0s 839us/step
MSE: 0.0019208902166859602
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 719us/step
155/155 [==============================] - 0s 701us/step
155/155 [==============================] - 0s 770us/step
MSE: 0.0006757729746865536
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 723us/step
155/155 [==============================] - 0s 926us/step
155/155 [==============================] - 0s 700us/step
MSE: 0.0013183919751097663
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 128, horizon 14, window 14
155/155 [==============================] - 0s 793us/step
155/155 [==============================] - 0s 723us/step
155/155 [==============================] - 0s 723us/step
MSE: 0.003737750236683717
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 776us/step
155/155 [==============================] - 0s 719us/step
155/155 [==============================] - 0s 791us/step
MSE: 0.0007166613926999384
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 722us/step
155/155 [==============================] - 0s 744us/step
155/155 [==============================] - 0s 705us/step
MSE: 0.0031059352063351263
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 826us/step
155/155 [==============================] - 0s 861us/step
155/155 [==============================] - 0s 791us/step
MSE: 0.0037291301492267987
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 128, horizon 14, window 14
155/155 [==============================] - 0s 786us/step
155/155 [==============================] - 0s 719us/step
155/155 [==============================] - 0s 693us/step
MSE: 0.0007980314974233936
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 16, horizon 21, window 21
154/154 [==============================] - 0s 884us/step
154/154 [==============================] - 0s 890us/step
154/154 [==============================] - 0s 1ms/step
MSE: 0.0005635530984374054
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 32, horizon 21, window 21
154/154 [==============================] - 0s 926us/step
154/154 [==============================] - 0s 897us/step
154/154 [==============================] - 0s 1ms/step
MSE: 0.0004941664390269078
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 64, horizon 21, window 21
154/154 [==============================] - 0s 897us/step
154/154 [==============================] - 0s 877us/step
154/154 [==============================] - 0s 842us/step
MSE: 0.0005087538744471153
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 128, horizon 21, window 21
154/154 [==============================] - 0s 919us/step
154/154 [==============================] - 0s 1ms/step
154/154 [==============================] - 0s 996us/step
MSE: 0.0031335256484303605
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 16, horizon 21, window 21
154/154 [==============================] - 0s 929us/step
154/154 [==============================] - 0s 1ms/step
154/154 [==============================] - 0s 906us/step
MSE: 0.002167164499240752
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 32, horizon 21, window 21
154/154 [==============================] - 0s 888us/step
154/154 [==============================] - 0s 889us/step
154/154 [==============================] - 0s 956us/step
MSE: 0.0005554149082851563
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 64, horizon 21, window 21
154/154 [==============================] - 0s 930us/step
154/154 [==============================] - 0s 890us/step
154/154 [==============================] - 0s 947us/step
MSE: 0.0005256424116422368
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 128, horizon 21, window 21
154/154 [==============================] - 0s 1ms/step
154/154 [==============================] - 0s 942us/step
154/154 [==============================] - 0s 975us/step
MSE: 0.0017000380841029573
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 16, horizon 21, window 21
154/154 [==============================] - 0s 1ms/step
154/154 [==============================] - 0s 951us/step
154/154 [==============================] - 0s 926us/step
MSE: 0.0010753766648615585
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 32, horizon 21, window 21
154/154 [==============================] - 0s 2ms/step
154/154 [==============================] - 0s 2ms/step
154/154 [==============================] - 0s 1ms/step
MSE: 0.000496073188430198
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 64, horizon 21, window 21
154/154 [==============================] - 0s 964us/step
154/154 [==============================] - 0s 1ms/step
154/154 [==============================] - 0s 1ms/step
MSE: 0.0014602672515914195
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 128, horizon 21, window 21
154/154 [==============================] - 0s 986us/step
154/154 [==============================] - 0s 1ms/step
154/154 [==============================] - 0s 1ms/step
MSE: 0.0013301394280406196
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 16, horizon 21, window 21
154/154 [==============================] - 0s 1ms/step
154/154 [==============================] - 0s 937us/step
154/154 [==============================] - 0s 1ms/step
MSE: 0.0062266855340786745
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 32, horizon 21, window 21
154/154 [==============================] - 0s 912us/step
154/154 [==============================] - 0s 907us/step
154/154 [==============================] - 0s 1ms/step
MSE: 0.0020072234737728936
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 64, horizon 21, window 21
154/154 [==============================] - 0s 978us/step
154/154 [==============================] - 0s 921us/step
154/154 [==============================] - 0s 946us/step
MSE: 0.005400191407512397
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 128, horizon 21, window 21
154/154 [==============================] - 0s 880us/step
154/154 [==============================] - 0s 945us/step
154/154 [==============================] - 0s 877us/step
MSE: 0.0025332653003674772
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 16, horizon 28, window 28
153/153 [==============================] - 0s 942us/step
153/153 [==============================] - 0s 1ms/step
153/153 [==============================] - 0s 1ms/step
MSE: 0.0011474504503269283
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 32, horizon 28, window 28
153/153 [==============================] - 0s 1ms/step
153/153 [==============================] - 0s 948us/step
153/153 [==============================] - 0s 805us/step
MSE: 0.0005597111557070005
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 64, horizon 28, window 28
153/153 [==============================] - 0s 897us/step
153/153 [==============================] - 0s 920us/step
153/153 [==============================] - 0s 1ms/step
MSE: 0.00048652664986708623
Entrenando modelo con 1000 neuronas, dropout 0.2, batch size 128, horizon 28, window 28
153/153 [==============================] - 0s 987us/step
153/153 [==============================] - 0s 946us/step
153/153 [==============================] - 0s 1ms/step
MSE: 0.004206479979684671
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 16, horizon 28, window 28
153/153 [==============================] - 0s 919us/step
153/153 [==============================] - 0s 1ms/step
153/153 [==============================] - 0s 909us/step
MSE: 0.0005757832872090319
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 32, horizon 28, window 28
153/153 [==============================] - 0s 958us/step
153/153 [==============================] - 0s 1ms/step
153/153 [==============================] - 0s 913us/step
MSE: 0.0008750543815006647
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 64, horizon 28, window 28
153/153 [==============================] - 0s 1ms/step
153/153 [==============================] - 0s 928us/step
153/153 [==============================] - 0s 910us/step
MSE: 0.0005724410354701456
Entrenando modelo con 1000 neuronas, dropout 0.4, batch size 128, horizon 28, window 28
153/153 [==============================] - 0s 931us/step
153/153 [==============================] - 0s 910us/step
153/153 [==============================] - 0s 918us/step
MSE: 0.004251920147643046
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 16, horizon 28, window 28
153/153 [==============================] - 0s 967us/step
153/153 [==============================] - 0s 1ms/step
153/153 [==============================] - 0s 921us/step
MSE: 0.0006675443046819318
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 32, horizon 28, window 28
153/153 [==============================] - 0s 948us/step
153/153 [==============================] - 0s 923us/step
153/153 [==============================] - 0s 1ms/step
MSE: 0.0008000964373721796
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 64, horizon 28, window 28
153/153 [==============================] - 0s 996us/step
153/153 [==============================] - 0s 945us/step
153/153 [==============================] - 0s 1ms/step
MSE: 0.0008801910541670247
Entrenando modelo con 1000 neuronas, dropout 0.6, batch size 128, horizon 28, window 28
153/153 [==============================] - 0s 944us/step
153/153 [==============================] - 0s 1000us/step
153/153 [==============================] - 0s 960us/step
MSE: 0.005374717460912041
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 16, horizon 28, window 28
153/153 [==============================] - 0s 951us/step
153/153 [==============================] - 0s 946us/step
153/153 [==============================] - 0s 899us/step
MSE: 0.0013580252443076896
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 32, horizon 28, window 28
153/153 [==============================] - 0s 1ms/step
153/153 [==============================] - 0s 973us/step
153/153 [==============================] - 0s 880us/step
MSE: 0.0008355796224295088
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 64, horizon 28, window 28
153/153 [==============================] - 0s 1ms/step
153/153 [==============================] - 0s 933us/step
153/153 [==============================] - 0s 1ms/step
MSE: 0.006726265025471883
Entrenando modelo con 1000 neuronas, dropout 0.8, batch size 128, horizon 28, window 28
153/153 [==============================] - 0s 952us/step
153/153 [==============================] - 0s 1ms/step
153/153 [==============================] - 0s 973us/step
MSE: 0.014797300037135601
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 16, horizon 7, window 7
156/156 [==============================] - 1s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.00042117394792122356
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.0003907126093744412
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.0004255313968460121
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.0007356015710956636
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.0004307271854108852
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.00046138040560107785
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.000423384826665306
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.0005759952119525914
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.0005908371995015007
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.0004372033997973144
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.0003963317096163111
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.0011573310715038885
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 16, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.001061951749782412
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 32, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.0004570523953006109
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 64, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.0003857696922293878
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 128, horizon 7, window 7
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
156/156 [==============================] - 0s 2ms/step
MSE: 0.0008217559144451253
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 1s 4ms/step
155/155 [==============================] - 1s 6ms/step
MSE: 0.000461714684577675
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 32, horizon 14, window 14
155/155 [==============================] - 1s 3ms/step
155/155 [==============================] - 1s 5ms/step
155/155 [==============================] - 1s 4ms/step
MSE: 0.0003922344457693521
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 64, horizon 14, window 14
155/155 [==============================] - 1s 3ms/step
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
MSE: 0.00036822045629206196
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 128, horizon 14, window 14
155/155 [==============================] - 1s 4ms/step
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
MSE: 0.0013803429779718037
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
MSE: 0.0004420150567857609
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
MSE: 0.0004517633180540298
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
MSE: 0.0004374313930049718
Fluctuación menor al 5% en el MSE por 2 iteración(es).
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 128, horizon 14, window 14
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
MSE: 0.0009420128425303112
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 16, horizon 14, window 14
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
MSE: 0.00057129624652189
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 32, horizon 14, window 14
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 0s 2ms/step
MSE: 0.00046557450817538503
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 64, horizon 14, window 14
155/155 [==============================] - 0s 2ms/step
155/155 [==============================] - 1s 3ms/step
155/155 [==============================] - 0s 2ms/step
MSE: 0.00042242137619865824
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 128, horizon 14, window 14
155/155 [==============================] - 1s 4ms/step
155/155 [==============================] - 1s 4ms/step
155/155 [==============================] - 1s 4ms/step
MSE: 0.0006716872638550134
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 16, horizon 14, window 14
155/155 [==============================] - 1s 4ms/step
155/155 [==============================] - 1s 4ms/step
155/155 [==============================] - 1s 4ms/step
MSE: 0.00042670872238740167
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 32, horizon 14, window 14
155/155 [==============================] - 1s 4ms/step
155/155 [==============================] - 1s 5ms/step
155/155 [==============================] - 1s 4ms/step
MSE: 0.00044564276865121326
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 64, horizon 14, window 14
155/155 [==============================] - 1s 5ms/step
155/155 [==============================] - 1s 4ms/step
155/155 [==============================] - 0s 3ms/step
MSE: 0.0008830194983367086
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 128, horizon 14, window 14
155/155 [==============================] - 1s 5ms/step
155/155 [==============================] - 1s 4ms/step
155/155 [==============================] - 1s 4ms/step
MSE: 0.00045476461798049785
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 16, horizon 21, window 21
154/154 [==============================] - 0s 2ms/step
154/154 [==============================] - 0s 2ms/step
154/154 [==============================] - 0s 2ms/step
MSE: 0.0006445067129269993
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 32, horizon 21, window 21
154/154 [==============================] - 0s 2ms/step
154/154 [==============================] - 0s 3ms/step
154/154 [==============================] - 0s 2ms/step
MSE: 0.0004015073260738833
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 64, horizon 21, window 21
154/154 [==============================] - 1s 3ms/step
154/154 [==============================] - 1s 3ms/step
154/154 [==============================] - 1s 3ms/step
MSE: 0.0003740950124587225
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 128, horizon 21, window 21
154/154 [==============================] - 1s 4ms/step
154/154 [==============================] - 1s 4ms/step
154/154 [==============================] - 1s 4ms/step
MSE: 0.002204952031706227
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 16, horizon 21, window 21
154/154 [==============================] - 1s 3ms/step
154/154 [==============================] - 1s 4ms/step
154/154 [==============================] - 1s 4ms/step
MSE: 0.0004565213619872473
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 32, horizon 21, window 21
154/154 [==============================] - 1s 6ms/step
154/154 [==============================] - 1s 3ms/step
154/154 [==============================] - 1s 6ms/step
MSE: 0.0006620725793389527
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 64, horizon 21, window 21
154/154 [==============================] - 1s 5ms/step
154/154 [==============================] - 1s 5ms/step
154/154 [==============================] - 1s 3ms/step
MSE: 0.00041511488342893505
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 128, horizon 21, window 21
154/154 [==============================] - 1s 4ms/step
154/154 [==============================] - 1s 5ms/step
154/154 [==============================] - 1s 4ms/step
MSE: 0.0019413822867324739
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 16, horizon 21, window 21
154/154 [==============================] - 1s 5ms/step
154/154 [==============================] - 1s 3ms/step
154/154 [==============================] - 1s 5ms/step
MSE: 0.0006525027375973603
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 32, horizon 21, window 21
154/154 [==============================] - 1s 4ms/step
154/154 [==============================] - 1s 4ms/step
154/154 [==============================] - 1s 3ms/step
MSE: 0.00042908450380473945
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 64, horizon 21, window 21
154/154 [==============================] - 1s 3ms/step
154/154 [==============================] - 1s 3ms/step
154/154 [==============================] - 1s 4ms/step
MSE: 0.00043298952486712464
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 128, horizon 21, window 21
154/154 [==============================] - 1s 3ms/step
154/154 [==============================] - 1s 4ms/step
154/154 [==============================] - 1s 3ms/step
MSE: 0.003099570230023694
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 16, horizon 21, window 21
154/154 [==============================] - 1s 4ms/step
154/154 [==============================] - 0s 3ms/step
154/154 [==============================] - 1s 3ms/step
MSE: 0.000514451208540867
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 32, horizon 21, window 21
154/154 [==============================] - 1s 4ms/step
154/154 [==============================] - 1s 4ms/step
154/154 [==============================] - 1s 4ms/step
MSE: 0.0022216349757741413
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 64, horizon 21, window 21
154/154 [==============================] - 1s 4ms/step
154/154 [==============================] - 1s 4ms/step
154/154 [==============================] - 1s 4ms/step
MSE: 0.0007773837265520828
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 128, horizon 21, window 21
154/154 [==============================] - 1s 3ms/step
154/154 [==============================] - 0s 3ms/step
154/154 [==============================] - 1s 3ms/step
MSE: 0.005610701003665128
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 16, horizon 28, window 28
153/153 [==============================] - 1s 3ms/step
153/153 [==============================] - 1s 3ms/step
153/153 [==============================] - 1s 6ms/step
MSE: 0.0004448508846061844
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 32, horizon 28, window 28
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 4ms/step
MSE: 0.00043118443852673607
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 64, horizon 28, window 28
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 4ms/step
MSE: 0.00041179806907808104
Fluctuación menor al 5% en el MSE por 2 iteración(es).
Entrenando modelo con 10000 neuronas, dropout 0.2, batch size 128, horizon 28, window 28
153/153 [==============================] - 1s 5ms/step
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 5ms/step
MSE: 0.0004930702914214218
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 16, horizon 28, window 28
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 3ms/step
153/153 [==============================] - 1s 4ms/step
MSE: 0.0005760514302706234
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 32, horizon 28, window 28
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 5ms/step
MSE: 0.0005109221301140596
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 64, horizon 28, window 28
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 5ms/step
153/153 [==============================] - 1s 5ms/step
MSE: 0.0003930446967444987
Entrenando modelo con 10000 neuronas, dropout 0.4, batch size 128, horizon 28, window 28
153/153 [==============================] - 1s 5ms/step
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 4ms/step
MSE: 0.0006493136974186919
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 16, horizon 28, window 28
153/153 [==============================] - 1s 5ms/step
153/153 [==============================] - 1s 6ms/step
153/153 [==============================] - 1s 5ms/step
MSE: 0.0006431473452398992
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 32, horizon 28, window 28
153/153 [==============================] - 1s 5ms/step
153/153 [==============================] - 1s 5ms/step
153/153 [==============================] - 1s 7ms/step
MSE: 0.0010364958439003007
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 64, horizon 28, window 28
153/153 [==============================] - 1s 6ms/step
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 6ms/step
MSE: 0.00042413978665411183
Entrenando modelo con 10000 neuronas, dropout 0.6, batch size 128, horizon 28, window 28
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 4ms/step
MSE: 0.0007091350133052691
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 16, horizon 28, window 28
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 5ms/step
MSE: 0.002184725210561902
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 32, horizon 28, window 28
153/153 [==============================] - 1s 5ms/step
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 4ms/step
MSE: 0.0006509535985451297
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 64, horizon 28, window 28
153/153 [==============================] - 1s 5ms/step
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 4ms/step
MSE: 0.0006394681570259493
Fluctuación menor al 5% en el MSE por 1 iteración(es).
Entrenando modelo con 10000 neuronas, dropout 0.8, batch size 128, horizon 28, window 28
153/153 [==============================] - 1s 4ms/step
153/153 [==============================] - 1s 5ms/step
153/153 [==============================] - 1s 4ms/step
MSE: 0.0004816896216228338

Los mejores parametros para la serie Change % fueron:

print(params_best_model_ch)
{'neurons': 10000, 'batchsize': 64, 'dropout_rate': 0.2, 'horizon': 14, 'window': 14, 'MSE': 0.00036822045629206196}

Los mejores parametros para la serie Change % fueron: De las series analizadas podemos decir que 10000 neuronas entregan mejores resultados

Residuales#

tomamos los residuos del mejor modelo para la serie Change % su evaluación y analisamos los residuales de cada ventana, además se mostraran las graficas para 5 ventanas aleatorias

res=residuals_bestmodel_ch


ljung_box_pvalues = []

for i, ventana in enumerate(res):
    ventana = np.array(ventana)
    ljung_box_pvalue = acorr_ljungbox(ventana, lags=[6], return_df=True)['lb_pvalue'].values[0]
    ljung_box_pvalues.append(ljung_box_pvalue)
df_resultados = pd.DataFrame({
    'Ventana': range(1, len(res) + 1),
    'LJung-Box (p-value)': ljung_box_pvalues
})

print(df_resultados.head(10))
# Seleccionar una muestra aleatoria de 5 ventanas para graficar
muestras = np.random.choice(len(res), size=5, replace=False)

for idx in muestras:
    ventana = np.array(res[idx])
    
    plt.figure(figsize=(4, 4))
    plt.plot(ventana, marker='o')
    plt.title(f'Serie de Residuos - Ventana {idx + 1}')
    plt.xlabel('Índice')
    plt.ylabel('Residuos')
    plt.show()

    
    qqplot(ventana, line='s')
    plt.title(f'QQPlot - Ventana {idx + 1}')
    plt.show()

    
    acf_vals = acf(ventana, nlags=min(10, len(ventana) - 1))
    plt.figure(figsize=(4, 4))
    plt.stem(range(len(acf_vals)), acf_vals, use_line_collection=True)
    plt.title(f'ACF de Residuos - Ventana {idx + 1}')
    plt.xlabel('Lags')
    plt.ylabel('Autocorrelación')
    plt.show()
   Ventana  LJung-Box (p-value)
0        1             0.471586
1        2             0.471586
2        3             0.471586
3        4             0.471586
4        5             0.471586
5        6             0.471586
6        7             0.471586
7        8             0.471586
8        9             0.471586
9       10             0.471586
_images/982114d58176daabf11a05ca35dcebf6de43a2af5a7e4db94d652cdc824b2e78.png _images/97a58b6c0c27df41da6b23a2aa88e24bff363ba14ea03b79b11d81053e960c64.png
C:\Users\claud\AppData\Local\Temp\ipykernel_17932\3775612513.py:37: MatplotlibDeprecationWarning:

The 'use_line_collection' parameter of stem() was deprecated in Matplotlib 3.6 and will be removed two minor releases later. If any parameter follows 'use_line_collection', they should be passed as keyword, not positionally.
_images/aa13ee328dc44ec5ebcacec2107b861914a65e5d9ac2c1f8f60f038713d3c5ad.png _images/e9c3b9a342cef6105e1a4bf8b07f90fecd8f626521970ccec01995870f5222eb.png _images/52ba0e0bb5cf9a57d5e501a9db19633c62a72d80add88663fff37a571eb36802.png _images/0611060ae7c65676daceb30814fd9188dbae7c17cf74f56d18f74efc21587ed9.png _images/4e0807b1b8ea2f3ae02921828cb030d01a3addab4ed35d98c76363fe1b73a7a2.png _images/1b87368a37da54486b7a805d3ae17ce8904170d040443e1168906f349d6d23ab.png _images/9fdc53db67501f3a40d49e1f3824a009d6d368b7a4009ef2f7587f2a4242104e.png _images/4928558b468e2b0cf9844841294b1caa9972c09dfe6d30434512c8d7e293d080.png _images/57d073f35d5de36d8b160f92077c06712277e13b179c6190ac3917117ad80d2a.png _images/d899bed5ca29f26eed63ebe008be195b01ed6757f36b5d768ae221487a94b967.png _images/01234e8fdaebf0b4a5918fdeda6fe255a1fff6fbd285507e76dbab4d10d895c3.png _images/39a60afb5a691f16656c8859d96b38d0cfcca2e88e853deaf06a507ee3a48da6.png _images/3d160a4dafa059ad4b0e3f3bd8591f0893786274eb47bae47dd0f6cb361b619d.png

Los residuales no cumplen con los supuestos al igual que en la serie price eso puede deberse al sobre ajuste del modelo

Tabla de todos los modelos, sus parametros y sus metricas#

metrics_list = validation_metrics_ch  
metrics = []

for i in metrics_list:
        
        metrics.append(i)
metricasval=pd.DataFrame(metrics)
metricasval = metricasval.drop_duplicates()
metricasval
neurons batchsize Dropout horizon window MAPE MAE MSE RMSE R2
0 10 16 0.2 7 7 12.858691 0.147585 0.029126 0.170665 -88.476519
1 10 32 0.2 7 7 60.690318 0.695714 0.598471 0.773609 -1837.564669
2 10 64 0.2 7 7 61.797480 0.708438 0.663403 0.814495 -2037.015386
3 10 128 0.2 7 7 77.078278 0.883561 1.181098 1.086783 -3627.054185
4 10 16 0.4 7 7 39.099680 0.448319 0.295604 0.543695 -907.114960
... ... ... ... ... ... ... ... ... ... ...
251 10000 128 0.6 28 28 1.602222 0.018505 0.000709 0.026630 -1.144502
252 10000 16 0.8 28 28 3.716672 0.042560 0.002185 0.046741 -5.606881
253 10000 32 0.8 28 28 1.533204 0.017721 0.000651 0.025514 -0.968597
254 10000 64 0.8 28 28 1.463758 0.016810 0.000639 0.025288 -0.933831
255 10000 128 0.8 28 28 1.125335 0.012977 0.000482 0.021947 -0.456681

256 rows × 10 columns

fig = px.line(metricasval, y='MSE', title='MSE vs Índice', labels={'index': 'Índice', 'MSE': 'MSE'})
fig.show()

De la grafica de MSE vs la iteración del modelo podemos ver que a medida que se aumentan las neuronas ( que fueron el búcle más grande) el modelo tiene mejores metricas pero esto también puede implicar sobre ajuste del modelo

Boxplot#

metrics_list = train_metrics_ch  
metricas_train = []

for i in metrics_list:
        
    metricas_train.append(i)
metricas_train=pd.DataFrame(metricas_train)
metricas_train = metricas_train.drop_duplicates()

metrics_list = test_metrics_ch

metricas_test = []

for i in metrics_list:
    
    metricas_test.append(i)
metricas_test=pd.DataFrame(metricas_test)
metricas_test = metricas_test.drop_duplicates()
errores_train =  metricas_train['MAPE']
errores_val=   metricasval['MAPE']
errores_test =  metricas_test['MAPE']

# Crear una lista que contenga todas las listas de residuos
residuos = [errores_train, errores_val, errores_test]

# Crear el Boxplot usando Seaborn
plt.figure(figsize=(8, 6))
sns.boxplot(data=residuos)

# Personalizar el gráfico
plt.title('Comparación de Residuos entre train, test, validation')
plt.xlabel('Lista')
plt.ylabel('MAPE')
plt.xticks(ticks=[0, 1, 2], labels=['Residuos train', 'Residuos val', 'Residuos test'])

# Mostrar el gráfico
plt.show()
_images/6c79261cbace6387c5c9468737b9f48048ca72f009f2b88f0cd4276c69f20d0e.png

La medianas se ven similares, incluso se logra ver que las casjas son iguales. Por lo que se puede afirmar que el modelo tuvo un comportamiento constante. como los puntos por fuera de las cajas son similares señala que los datos eran atípicos y no son un error del modelo.

Prediciones#

mejormodelo=best_model_ch

X_train, Y_train, X_val, Y_val, X_test, Y_test=create_sliding_windows(datos, 14, 14)
print(X_train.shape)
train=mejormodelo.predict(X_train)
val=mejormodelo.predict(X_val)
test=mejormodelo.predict(X_test)
(4944, 14)
155/155 [==============================] - 0s 3ms/step
155/155 [==============================] - 1s 4ms/step
155/155 [==============================] - 1s 3ms/step
best_model_ch.summary()
Model: "sequential_511"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense_1022 (Dense)          (None, 10000)             150000    
                                                                 
 dropout_511 (Dropout)       (None, 10000)             0         
                                                                 
 dense_1023 (Dense)          (None, 14)                140014    
                                                                 
=================================================================
Total params: 290,014
Trainable params: 290,014
Non-trainable params: 0
_________________________________________________________________
train_data = []
for i, row in enumerate(train):
    for j, value in enumerate(row):
        train_data.append({
            "Conjunto": "Train", 
            "Índice": i + 1 + j, 
            "Valor": value
        })
        
val_data = []
for i, row in enumerate(val):
    for j, value in enumerate(row):
        train_data.append({
            "Conjunto": "val",  
            "Índice": i + 8+ j, 
            "Valor": value
        })
test_data = []
for i, row in enumerate(test):
    for j, value in enumerate(row):
        train_data.append({
            "Conjunto": "test",  
            "Índice": i + 16+ j, 
            "Valor": value
        })

# Preparar los datos para la lista 'datos'
datos_data = []
for i, value in enumerate(datos):
    datos_data.append({
        "Conjunto": "Datos", 
        "Fila": "Serie Datos", 
        "Índice": i+1,  
        "Valor": value
    })

# Combinar ambos conjuntos de datos en un DataFrame
df_plot = pd.DataFrame(train_data + datos_data+val_data+test_data)

# Crear el gráfico con Plotly Express
fig = px.line(
    df_plot, 
    x="Índice", 
    y="Valor", 
    color="Conjunto",  # Diferenciar 'Train' y 'Datos'
      # Mantener la separación por filas
    markers=True, 
    title="Gráfico de Train y Lista Datos"
)

# Mostrar la figura
fig.show()

Como se ve en la gráfica el modelo es capaz de identificar las tendencias y la serie en general a excepción de los picos abrutos.